/*
XPTracker - Alternative Agile Tracking Tool
Copyright (C) 2006-2009  Stephen Starkey

This program is free software; you can redistribute it and/or
modify it under the terms of the GNU General Public License
as published by the Free Software Foundation; either version 2
of the License, or (at your option) any later version.

This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, USA
*/
package org.xptracker.port;

import org.apache.commons.lang.StringUtils;
import org.xptracker.domain.Customer;
import org.xptracker.domain.Story;
import org.xptracker.persistence.PersistenceManager;

import java.util.Collection;


public class StoryCustomersType<T> extends SimpleType<T> {
  public StoryCustomersType(String customer) {
    super(customer);
  }


  public String exportValue(T t) throws RuntimeException {
    Collection<Customer> customers = (Collection<Customer>)super.getExportValue(t);
    StringBuilder builder = new StringBuilder();
    String delim = "";
    for(Customer c : customers) {
      builder.append(delim).append(c.getName());
      delim = ",";
    }
    return builder.toString();
  }


  public void setImportValue(T t, String value, PersistenceManager.UpdateReceiver receiver) throws RuntimeException {
    if(StringUtils.isBlank(value)) {
      return;
    }
    final Story story = (Story)t; //argh
    String [] customers = value.split(",");
    for(final String customerStr : customers) {
      Customer cus = getDomain().loadCustomer(customerStr);
      if(cus == null) {
         cus = new Customer(customerStr);
         receiver.insert(cus);
      }
      story.addCustomer(cus);
    }
  }

  protected Class getType() {
    return Customer.class;
  }
}
